﻿using System;
using Commands.Mafia;
using SkypeBot.Commands;
using SkypeBot.Core;

namespace Commands
{
    public class MafiaCommand : IMessageHandler
    {
        private bool _isRegistrationStarted;

        [Message(@"^!Mafia$|Мафія$|Мафия$")]
        public Responce StartRegistration(Message message)
        {
            _isRegistrationStarted = true;
            return new Responce("Для регистрации игры в Мафию введите !Iplay или !Яграю или !Яиграю");
        }

        [Message(@"^!Iplay$|Яграю$|Яиграю$")]
        public Responce RegisterPlayer(Message message)
        {
            if (_isRegistrationStarted)
            {
                try
                {
                    var answer = MafiaCore.RegisterPlayer(message.SenderName);
                    return new Responce(answer);
                }
                catch (Exception ex)
                {
                    return new Responce(string.Format("А фиги тебе {0}, а не регистрацию. Проверь вотету хрень: {1}", message.SenderName, ex.Message));
                }
            }

            return new Responce("Для начала регистрации введите !Mafia или !Мафія или !Мафия");
        }

        [Message(@"^!StartMafia$|ПочатиМафію$|НачатьМафию$")]
        public void StartGame(Message message)
        {
            if (_isRegistrationStarted)
            {
                _isRegistrationStarted = false;
            }
            MafiaCore.StartGame();
        }

        [Message(@"^!check_(?<name>\w*)$")]
        public void DetectiveCheck(Message message, string name)
        {
            MafiaCore.CheckIfMafiaForDetective(message.SenderName, name);
        }
    }
}
